-- UITableViewTest
-- create by zouyb
-- TableView使用测试

TableViewTestLayer = class("TableViewTestLayer")
TableViewTestLayer.__index = TableViewTestLayer

function TableViewTestLayer.extend(target)
    local t = tolua.getpeer(target)
    if not t then
        t = {}
        tolua.setpeer(target, t)
    end
    setmetatable(t, TableViewTestLayer)
    return target
end

-- 当scrollview滚动时调用
function TableViewTestLayer.scrollViewDidScroll(view)
    print("scrollViewDidScroll")
end

-- 当scrollview缩放时调用
function TableViewTestLayer.scrollViewDidZoom(view)
    print("scrollViewDidZoom")
end

-- 触摸点击事件
function TableViewTestLayer.tableCellTouched(table,cell)
    print("cell touched at index: " .. cell:getIdx())
end

-- 指定所有列表的宽带和高度，当列表宽高不需要变化时，就用这个吧
function TableViewTestLayer.cellSizeForTable(table,idx) 
    return 102,107
end

-- 生成列表每一项的内容 
function TableViewTestLayer.tableCellAtIndex(table, idx)
    local strValue = string.format("%d",idx)
    local cell = table:dequeueCell()
    local label = nil
    if nil == cell then
        cell = cc.TableViewCell:new()
        local sprite = cc.Sprite:create("images/hero/1.png")
        sprite:setAnchorPoint(cc.p(0,0))
        sprite:setPosition(cc.p(0, 0))
        cell:addChild(sprite)

        label = cc.Label:createWithSystemFont(strValue, "Helvetica", 20.0)
        label:setPosition(cc.p(0,0))
        label:setAnchorPoint(cc.p(0,0))
        label:setTag(123)
        cell:addChild(label)
        print("init:"..idx);
    else
        label = cell:getChildByTag(123)
        if nil ~= label then
            label:setString(strValue)
        end
        print("set:"..idx);
    end

    return cell
end

-- 返回列表的子项的个数  
function TableViewTestLayer.numberOfCellsInTableView(table)
   return 10
end

function TableViewTestLayer:init()

    local winSize = cc.Director:getInstance():getWinSize()

    --tableView = cc.TableView:create(cc.size(107, 350))
    --tableView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL)
    tableView = cc.TableView:create(cc.size(350, 107));
    tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL)
    
    tableView:setPosition(cc.p(winSize.width / 2, winSize.height / 2 - 150))
    tableView:setDelegate()
    tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)
    self:addChild(tableView)
    tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidScroll, cc.SCROLLVIEW_SCRIPT_SCROLL)
    tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidZoom, cc.SCROLLVIEW_SCRIPT_ZOOM)
    tableView:registerScriptHandler(TableViewTestLayer.tableCellTouched, cc.TABLECELL_TOUCHED)
    tableView:registerScriptHandler(TableViewTestLayer.cellSizeForTable, cc.TABLECELL_SIZE_FOR_INDEX)
    tableView:registerScriptHandler(TableViewTestLayer.tableCellAtIndex, cc.TABLECELL_SIZE_AT_INDEX)
    tableView:registerScriptHandler(TableViewTestLayer.numberOfCellsInTableView, cc.NUMBER_OF_CELLS_IN_TABLEVIEW)
    tableView:reloadData()
    
    return true
end

function TableViewTestLayer.create()
    local layer = TableViewTestLayer.extend(cc.Layer:create())
    if nil ~= layer then
        layer:init()
    end

    return layer
end
